package cruciverba.model;

/**
 * This class verify if a word is palindromic
 * 
 * @author alberto
 * @see IVerifica
 * 
 */

public class VerificaStringaPalindroma implements IVerifica {

	// Il metodo seguente controlla che sia inserita solo una parola e che essa
	// sia palindroma, usando un semplice algoritmo che si basa sull'idea che
	// una parola può essere o pari o dispari ma in entrambi i casi basta
	// verificare che un carattere sia diverso dal suo speculare andando a
	// scansionare dunque la stringa "solo per metà"

	@Override
	public int verify(String string) throws Exception {

		int length = string.length();

		CruciverbaUtils.isWord(string);

		for (int i = 0; i < length / 2; i++) {
			if (string.charAt(i) != string.charAt(length - 1 - i)) {
				return 0;
			}
		}

		return 1;
	}

	@Override
	public String modellaVerify(String string) throws Exception {

		if (verify(string) == 1) {
			return "Yes";
		}

		return "No";
	}

}
